#include"game.h"


void InitBoard(char board[ROWS][COLS],int rows,int cols,char set)
{
    int i=0,j=0;
    for(i = 0; i < rows; i++)
    {
        for ( j = 0; j < cols; j++)
        {
            board[i][j]=set;
        }    
    }
}

void DisplayBoard(char board[ROWS][COLS],int row,int col)
{
    int i=0,j=0;
    printf("------ 扫雷游戏 ------\n");
    for (j = 0; j <= col; j++)
    {
        printf("%d ",j);
    }
    printf("\n");
    for ( i = 1; i <= row; i++)
    {
        printf("%d ",i);
        for ( j = 1; j <= col; j++)
        {   
            
            printf("%c ",board[i][j]);
        }
        printf("\n");
    }
    printf("------ 扫雷游戏 -------\n");
}

void SetMine(char board[ROWS][COLS],int row,int col)
{  
    int count=0;
    while (count<MINE)
    {
        int x=rand()%row+1;
        int y=rand()%col+1;
       
        if(board[x][y]=='0')
        {
        board[x][y]='1';
        count++;
        }
    }   
}


void get_mine(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y) {
    if (x < 0 || x >= ROWS || y < 0 || y >= COLS || show[x][y] != '*') {
        return;
    }

    if (mine[x][y] == '0') {
        int count = 0;
        for (int i = -1; i <= 1; i++) {
            for (int j = -1; j <= 1; j++) {
                int newX = x + i;
                int newY = y + j;
                if (newX >= 0 && newX < ROWS && newY >= 0 && newY < COLS && mine[newX][newY] == '1') {
                    count++;
                }
            }
        }
        
        show[x][y] = count + '0';
        if (count == 0) {
            for (int i = -1; i <= 1; i++) {
                for (int j = -1; j <= 1; j++) {
                    get_mine(mine, show, x + i, y + j);
                }
            }
        }
    }
}

 void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
 {
    bool gamerun=true;
    while (gamerun)
    {
        //DisplayBoard(mine,ROW,COL);
        char fs='0';
        int inputx=0,inputy=0;
        printf("请输入f(f:旗帜)坐标或s(s:揭示)坐标(空格隔开):>\n");
        scanf(" %c %d %d",&fs,&inputx,&inputy);

        if(inputx >= 1 && inputx <= row && inputy >= 1 && inputy <= col)
        {
              switch (fs)
            {
                case 'f':
                    if (inputx>=1&&inputy>=1&&inputx<=row&&inputy<=col)
                    {
                        show[inputx][inputy]='f';
                        DisplayBoard(show,ROW,COL);
                    }
                    break;
                case 's':
                    if (mine[inputx][inputy]=='1')
                    {
                        printf("你踩雷了！游戏结束！\n");
                        DisplayBoard(mine,ROW,COL);
                        gamerun=false;
                    }
                    else if(mine[inputx][inputy]=='0')
                    {
                        get_mine(mine,show,inputx,inputy);
                        DisplayBoard(show,ROW,COL);
                    }
                     break;
                default:
                    printf("输入坐标错误，请重新输入\n");
                    break;
            }
        }
        else
        {
            printf("坐标输入非法，请重新输入。\n");
        }

    int i=0,j=0,a=0,b=0,c=0;
    for ( i = 1; i <= 9; i++)
    {
        for ( j = 1; j <= 9; j++)
        {
            if (show[i][j]=='*')
            {
                a++;
            }
            if(show[i][j]=='f')
            {
                b++;
            }
        }
        
    }
    c=a+b;
    if (c==MINE)
    {
        printf("玩家胜利！\n");
        DisplayBoard(mine,ROW,COL);
        break;
    }
        // if (inputx>=1&&inputy>=1&&inputx<=row&&inputy<=col)
        // {
        //     if (mine[inputx][inputy]=='1')
        //     {
        //         printf("你踩雷了！游戏结束！\n");
        //         DisplayBoard(mine,ROW,COL);
        //         break;
        //     }
        // }

    //     int inputx=0,inputy=0;
    //     printf("请输入要排查的x坐标:>\n");
    //     scanf("%d",&inputx);
    //     printf("请输入要排查的y坐标:>\n");
    //     scanf("%d",&inputy);
    //     if (inputx>=1&&inputy>=1&&inputx<=row&&inputy<=col)
    //     {
    //         if (mine[inputx][inputy]=='1')
    //         {
    //             printf("你踩雷了！游戏结束！\n");
    //             DisplayBoard(mine,ROW,COL);
    //             break;
    //         }
    //         else
    //         {
    //            int ret= get_mine(mine,inputx,inputy);
    //            show[inputx][inputy]='ret';
    //            DisplayBoard(show,ROW,COL);
    //         }
    //     }

    //     else
    //     {
    //         printf("坐标输入非法，请重新输入。\n");
    //     }
        
    }
    
 }